package com.kungfuhacking.wristbandpro.chat.activity;

import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.GridView;

import com.kungfuhacking.wristbandpro.R;
import com.kungfuhacking.wristbandpro.base.bean.RequestBean;
import com.kungfuhacking.wristbandpro.base.view.BaseActivity;
import com.kungfuhacking.wristbandpro.chat.bean.UserListBean;
import com.kungfuhacking.wristbandpro.chat.presenter.GroupSettingNumAdapter;
import com.kungfuhacking.wristbandpro.custom.TitleBarView;
import com.kungfuhacking.wristbandpro.login.activity.LoginActivity;
import com.kungfuhacking.wristbandpro.net.BaseNoTObserver;
import com.kungfuhacking.wristbandpro.net.RetrofitHttpUtil;
import com.kungfuhacking.wristbandpro.utils.Constant;

import java.util.List;

import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;


/**
 * 群聊设置页面
 * Created by Aaron on 16/1/28.
 */
public class ChatSetActivity extends BaseActivity {

    private GridView gvnums;
//    private TextView tvgroupname;
    //    private ImageView ivshow;
//    private ImageView ivremaind;
    //    private Button btnexit;
    private String topic;
    private CompositeDisposable compositeDisposable = new CompositeDisposable();
//    private TopicEntity topicEntity;
//    private boolean childGroup = false;//是否是孩子的群, 孩子的群无法修改群昵称群头像和群信息

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_group_setting);

        if (bundle != null)
            topic = bundle.getString("topic");

        if (TextUtils.isEmpty(topic)) {
            finish();
            return;
        }

//        //是孩子的群, 孩子的群无法修改群昵称群头像和群信息
//        if (topic.startsWith(MqttConstant.START_CHILD))
//            childGroup = true;

        initWidget();
        loadGroupInfo();
//        Set<String> remadinSet = sp.getStringSet(MqttConstant.REMAIND + sp.getString(MqttConstant.USERID, ""), null);
//        ivremaind.setSelected(!(remadinSet != null && remadinSet.contains(topic)));

//        if (childGroup)
//            btnexit.setVisibility(View.INVISIBLE);

    }

//    @Override
//    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//        super.onActivityResult(requestCode, resultCode, data);
//
//        if (requestCode == 0x121 && resultCode == 0x122) {
//            //退出群成功
//            rl_exchange_master.setVisibility(View.INVISIBLE);
//            isAdmin = false;
//            //隐藏掉 群主转让条目
//            adapter.setAdmin(false);
//
//            //把新群主设置到第一个位置
//            if (data != null)
//                exChangePosition(data);
//
//        }
//
//    }

//    private void exChangePosition(Intent data) {
//
//        String newMasterNum = data.getStringExtra("newMasterNum");
//
//        for (GroupSettingBean.TopicEntity.UserListEntity next : userList) {
//            if (next != null && next.user != null && newMasterNum.equals(next.user.phoneNum)) {
//
//                userList.remove(next);
//                userList.add(0, next);
//                adapter.notifyDataSetChanged();
//                return;
//            }
//        }
//    }

    /**
     * 获取群信息
     */
    private void loadGroupInfo() {

        com.alibaba.fastjson.JSONObject js = new com.alibaba.fastjson.JSONObject();
        js.put("token", sp.getString(Constant.TOKEN, ""));
        js.put("topic", topic);

        RetrofitHttpUtil.getInstance().groupInfo(new BaseNoTObserver<UserListBean>() {
//            @Override
//            public void onHandleSuccess(GroupSettingBean groupSettingBean) {
//
//                hideLoading();
//                if (groupSettingBean == null)
//                    return;
//
//                if (groupSettingBean.topic == null)
//                    return;
//
//                //设置 群设置内容
//                setGroupInfo(groupSettingBean.topic);
////                //判断是否是群成员
////                setWidget(CommonUtils.isFriendOrGroupNum(sp, ChatSetActivity.this, topic));
//
//            }

            @Override
            public void onHandleSuccess(UserListBean userListBean) {

                hideLoading();

                if (userListBean == null)
                    return;
//
                if (userListBean.getUserList() == null)
                    return;

                //设置 群设置内容
                setGroupInfo(userListBean.getUserList());
            }

            @Override
            public void onHandleError(String message) {
                showErr(message);
                hideLoading();
            }

            @Override
            public void onReLogin(String message) {
                showErr(message);
                hideLoading();
                nextActivityWithSingleTask(LoginActivity.class);
            }

            @Override
            public void onSubscribe(Disposable d) {
                compositeDisposable.add(d);
                showLoading("获取中...");

            }
        }, new RequestBean().setData(js.toString()));

    }

//    /**
//     * 设置不是群成员时控件的状态
//     */
//    private void setWidget(boolean isNums) {
//
//        if (!isNums) {
//            adapter.setChildGroup(true);
//            adapter.notifyDataSetChanged();
//            tvgroupname.setOnClickListener(null);
//            btnexit.setVisibility(View.INVISIBLE);
//        }
//
//    }

    /**
     * 设置群设置内容
     */
    private void setGroupInfo(List<UserListBean.UserListEntity> topic) {

//        groupImgUrl = topic.groupImgUrl;//群头像

//        int mastId = 0;
//
//        //判断自己是否是群主
//        for (int i = 0; i < userList.size(); i++) {
//
//            if (topic.userList.get(i).isAdmin) {
//
//                mastId = i;
//
//                if (topic.userList.get(i).user != null
//                        && topic.userList.get(i).user.phoneNum.equals(sp.getString(Constant.MOBILE, "")))
//                    //说明本人是群主
//                    isAdmin = true;
//
//                break;
//            }
//
//        }

//        GroupSettingBean.TopicEntity.UserListEntity masterEntity = userList.get(mastId);
//
//        userList.remove(masterEntity);
//        userList.add(0, masterEntity);
//
//        if (isAdmin && !childGroup) //是群主,并且不是 孩子(/c/)的群 显示群主管理权转让,否则不显示
//            rl_exchange_master.setVisibility(View.VISIBLE);
//        else
//            rl_exchange_master.setVisibility(View.INVISIBLE);

        //设置群列表成员的头像
//        adapter = new GroupSettingNumAdapter(this, userList, isAdmin, childGroup);
        GroupSettingNumAdapter adapter = new GroupSettingNumAdapter(this, topic);
        gvnums.setAdapter(adapter);

//        //群昵称
//        groupName = topic.groupName;
//        tvgroupname.setText(topic.groupName);

//        if (!childGroup) {//正常的群聊,(非孩子群聊)
//
//            gvnums.setOnItemClickListener(new AdapterView.OnItemClickListener() {
//                @Override
//                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//
//                    if (userList == null)
//                        return;
//
//                    if (position == userList.size()) {  // 添加群成员
//
//                        mIntent = new Intent(ChatSetActivity.this, ChooseGroupNumsActivity.class);
//                        mIntent.putExtra("addNums", topic);
//                        mIntent.putExtra("style", MqttConstant.ADD_GROUP_NUMS);
//                        mIntent.putExtra("groupName", groupName);
//                        startActivity(mIntent);
//
//                    } else if (position == userList.size() + 1) {  //删除群成员
//
//                        mIntent = new Intent(ChatSetActivity.this, ChooseGroupNumsActivity.class);
//                        mIntent.putExtra("removeNums", topic);
//                        mIntent.putExtra("style", MqttConstant.DELETE_GROUP_NUMS);
//                        mIntent.putExtra("groupName", groupName);
//                        startActivity(mIntent);
//                    }
//
//                }
//            });
//        }
//        rl_exchange_master.setOnClickListener(this);

    }

    private void initWidget() {

        TitleBarView titleBarView = (TitleBarView) findViewById(R.id.tbv);
//        this.btnexit = (Button) findViewById(R.id.btn_exit);
//        RelativeLayout rlclear = (RelativeLayout) findViewById(R.id.rl_clear);
//        this.ivremaind = (ImageView) findViewById(R.id.iv_remaind);
//        this.ivshow = (ImageView) findViewById(R.id.iv_show);
//        this.tvgroupname = (TextView) findViewById(R.id.tv_group_name);
        this.gvnums = (GridView) findViewById(R.id.gv_nums);
//        RelativeLayout rl_group_name = (RelativeLayout) findViewById(R.id.rl_group_name);
//        rl_exchange_master = (RelativeLayout) findViewById(R.id.rl_exchange_master);
        titleBarView.setOnLeftClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
//        if (!childGroup) //正常的群聊,(非孩子群聊)
//            rl_group_name.setOnClickListener(this);
//
////        btnexit.setOnClickListener(this);
//        ivremaind.setOnClickListener(this);
//        rlclear.setOnClickListener(this);

    }

//    @Override
//    public void onClick(View v) {
//
//        switch (v.getId()) {
//
//            case R.id.btn_exit://退出群组
//
//                //先判断是否是群成员
//                if (CommonUtils.isFriendOrGroupNum(sp, this, topic))
//                    exitGroup();
//                else
//                    setWidget(false);
//
//                break;
//
//            case R.id.rl_exchange_master://转移群主
//
//                mIntent = new Intent(ChatSetActivity.this, ExchangeMasterActivity.class);
//                mIntent.putExtra("topicEntity", topicEntity);
//                startActivityForResult(mIntent, 0x121);
//
//                break;
//
//            case R.id.rl_group_name://修改群名称
//
//                //先判断是否是群成员
//                if (CommonUtils.isFriendOrGroupNum(sp, this, topic))
//                    modifyGroupName();
//                else
//                    setWidget(false);
//
//                break;
//
//            case R.id.iv_remaind://群消息提醒
//
//                if (ivremaind.isSelected())
//                    setRemaind(false);
//                else
//                    setRemaind(true);
//
//                ivremaind.setSelected(!ivremaind.isSelected());
//
//                break;
//
//            case R.id.rl_clear://清空聊天记录
//
//                new AlertDialog.Builder(this).setTitle("提醒").setMessage("清空聊天记录,该操作不可恢复").setNegativeButton("取消", null)
//                        .setPositiveButton("清空", new DialogInterface.OnClickListener() {
//                            @Override
//                            public void onClick(DialogInterface dialog, int which) {
//
//                                new DeleteTask().execute();
//                            }
//                        }).show();
//
//                break;
//
//            case R.id.tv_sure:  //修改群昵称
//
//                if (TextUtils.isEmpty(et_group_name.getText().toString().trim())) {
//                    showErr("请输入群昵称");
//                    return;
//                }
//
//                //先判断是否是群成员
//                if (CommonUtils.isFriendOrGroupNum(sp, this, topic))
//                    modifySetting(et_group_name.getText().toString().trim(), groupImgUrl, true);
//                else
//                    setWidget(false);
//
//                break;
//
//            case R.id.tv_cancle://取消修改群昵称
//
//                if (renameDiago != null && renameDiago.isShowing())
//                    renameDiago.dismiss();
//
//                break;
//
//        }
//
//    }

//    /**
//     * 新消息是否提醒
//     *
//     * @param remaind
//     */
//    private void setRemaind(boolean remaind) {
//
//        SharedPreferences.Editor edit = sp.edit();
//
//        Set<String> remaindSet = sp.getStringSet(MqttConstant.REMAIND + sp.getString(MqttConstant.USERID, ""), new LinkedHashSet<String>());
//
//        if (remaind)
//            remaindSet.remove(topic);
//        else
//            remaindSet.add(topic);
//
//        edit.putStringSet(MqttConstant.REMAIND + sp.getString(MqttConstant.USERID, ""), remaindSet).apply();
//
//    }

//    /**
//     * 修改群昵称
//     */
//    private void modifyGroupName() {
//
//        renameDiago = new Dialog(this, R.style.no_title);
//        renameDiago.setCancelable(true);
//        renameDiago.setCanceledOnTouchOutside(true);
//        renameDiago.show();
//
//        renameDiago.setContentView(R.layout.diago_change_groupname);
//
//        et_group_name = (EditText) renameDiago.findViewById(R.id.et_group_name);
//        TextView tv_sure = (TextView) renameDiago.findViewById(R.id.tv_sure);
//        TextView tv_cancle = (TextView) renameDiago.findViewById(R.id.tv_cancle);
//
//        et_group_name.post(new Runnable() {
//
//            @Override
//            public void run() {
//                InputMethodManager im = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
//                im.showSoftInput(et_group_name, 0);
//            }
//        });
//
//        tv_sure.setOnClickListener(this);
//        tv_cancle.setOnClickListener(this);
//
//    }

//    /**
//     * 删除聊天记录的task
//     */
//    private class DeleteTask extends AsyncTask<String, String, String> {
//
//        private ProgressDialog show;
//
//        @Override
//        protected void onPreExecute() {
//            super.onPreExecute();
//            show = ProgressDialog.show(ChatSetActivity.this, "请稍后", "正在删除聊天记录");
//        }
//
//        @Override
//        protected String doInBackground(String... params) {
//
//            DatabaseManager.getInstance().deleteHistory(ChatSetActivity.this, topic, sp.getString(MqttConstant.USERID, ""));
//            DatabaseManager.getInstance().clearTopic(ChatSetActivity.this, new String[]{
//                    //db.execSQL("update " + Constant.TOPIC_TABLE + " set sendId=?,content=?" +
////                    ",messageType=?,chatType=?,sendTime=?,receivePic=?, receiveName=?,receiveId=? where topic=? and userId=?", args);
//                    sp.getString(MqttConstant.USERID, ""), "", MqttConstant.MQTTMESSAGETEXT, "",
//                    groupImgUrl, groupName, null, topic, sp.getString(MqttConstant.USERID, "")
//
//            });
//
//            return null;
//        }
//
//        @Override
//        protected void onPostExecute(String s) {
//            super.onPostExecute(s);
//
//            if (show != null && show.isShowing())
//                show.dismiss();
//
//            MessageBean mb = new MessageBean();
//            mb.operationStyle = MqttConstant.DELETE_RECENT_HISTORY;
//            mb.channelId = topic;
//            mb.messageType = MqttConstant.MQTTMESSAGETEXT;
////            mb.chatType = Constant.CHAT_GROUP;
//            mb.content = "";
//            mb.receiveName = groupName;
//            mb.receivePic = groupImgUrl;
//            EventBus.getDefault().post(mb);//通知 聊天页面 和 最近聊天列表页面 删除聊天记录
//
//            showErr("删除成功");
//
//        }
//
//    }

    /**
     //     * 退出群
     //     */
//    private void exitGroup() {
//
//        //用户编辑过,给出提示
//        new AlertDialog.Builder(this).setMessage("退出后不会再接收此群聊消息").setNegativeButton("取消", null).setPositiveButton("退出", new DialogInterface.OnClickListener() {
//            @Override
//            public void onClick(DialogInterface dialog, int which) {
//                dialog.dismiss();
//
//                if (isAdmin && userList != null && userList.size() > 1) {//如果是群主 并且群成员大于1人时
//                    showErr("您是群主,请先移交群");
//                    return;
//                }
//
//                //调用退出群接口
//                com.alibaba.fastjson.JSONObject j = new com.alibaba.fastjson.JSONObject();
//                j.put("token", sp.getString(Constant.TOKEN, ""));
//                j.put("topic", topic);
//
//                RetrofitHttpUtil.getInstance().leftGroup(new BaseNoTObserver<Basebean>() {
//                    @Override
//                    public void onHandleSuccess(Basebean basebean) {
////                        hideLoading();
//                        //删除聊天列表中的该topic的聊天条目, 数据库中删除该聊天群的信息, 取消订阅该topic的消息
//                        new ExitTask().execute();
//                    }
//
//                    @Override
//                    public void onHandleError(String message) {
//                        hideLoading();
//                        showErr(message);
//                    }
//
//                    @Override
//                    public void onSubscribe(Disposable d) {
//                        compositeDisposable.add(d);
//                        showLoading("退出中...");
//                    }
//                }, new RequestBean().setData(j.toString()));
//
//            }
//        }).show();
//
//    }

//    /**
//     * 退出群的task,删除聊天记录,更改群头像和昵称
//     */
//    private class ExitTask extends AsyncTask<String, Integer, Bitmap> {
//
//        @Override
//        protected void onPreExecute() {
//            super.onPreExecute();
////            showLoading("正在删除聊天记录...");
//        }
//
//        @Override
//        protected Bitmap doInBackground(String... params) {
//
//            Bitmap groupBitmap = null;
//
//            //通知 messageFragment 页面发生改变
//            MessageBean mb = new MessageBean();
//            mb.operationStyle = MqttConstant.OFF_GROUP;
//            mb.channelId = topic;
//            EventBus.getDefault().post(mb);
//
//            //取消订阅该主题
//            MqttManager.getInstance().unSubTopic(topic);
//
//            //删除聊天记录
//            DatabaseManager.getInstance().deleteHistory(ChatSetActivity.this, topic, sp.getString(MqttConstant.USERID, ""));
//            //删除topic表中的数据
//            DatabaseManager.getInstance().clearTopic(ChatSetActivity.this, topic, sp.getString(MqttConstant.USERID, ""));
//
//            //发送群广播,通知修改群头像和昵称
//            if (userList == null || userList.size() <= 1) {//如果群里就剩自己一个人 则不需要通知别人
//                hideLoading();
//                return null;
//            }
//
//            //群昵称 (判断群昵称是否修改过, 修改过则不改了, 没有修改过就删除自己的昵称)
//            if (userList != null && userList.size() > 0) {
//
//                boolean change = false;//群昵称是否修改过
//
//                for (int i = 0; i < userList.size(); i++) {
//
//                    String nickName = userList.get(i).user.nickName;
//
//                    if (!groupName.contains(nickName)) {//不包含, 说明修改了群名片
//                        change = true;
//                        break;
//                    }
//
//                }
//
//                List<String> urlImags = new ArrayList<>();
//                StringBuilder sb = new StringBuilder();
//
//                for (int i = 0; i < userList.size(); i++) {
//
//                    if (!sp.getString(MqttConstant.USERID, "").equals(userList.get(i).user.phoneNum)) {
//
//                        urlImags.add(userList.get(i).user.imgUrl);//添加头像url
//                        if (!change)
//                            sb.append(userList.get(i).user.nickName).append("、");//群昵称
//
//                    }
//
//                }
//
//                if (!change && sb.length() > 0) {
//                    groupName = sb.substring(0, sb.length() - 1);
//                }
//
//                //制作群聊新头像
////                return NinePic.getInstance().getSinglePic(GroupSettingActivity.this, urlImags);
//                groupBitmap = GroupFaceUtils.createGroupFace(ChatSetActivity.this, urlImags);
//
//            } else
//                hideLoading();
//
//            return groupBitmap;
//        }
//
//        @Override
//        protected void onPostExecute(Bitmap b) {
//            super.onPostExecute(b);
//
//            if (userList == null || userList.size() <= 1) {//如果群里就剩自己一个人 则不需要通知别人
//                finish();
//                hideLoading();
//                return;
//            }
//
//            //请求七牛获取到群头像
//            getQiniuToken(CommonUtils.compressByte(b));
//        }
//    }


//    public void getQiniuToken(final byte[] bytes) {
//
//        //获取发送的图片的七牛地址
//        JSONObject j = new JSONObject();
//        j.put("token", getToken());
//        RetrofitHttpUtil.getInstance().uploadQiNiuToken(new BaseNoTObserver<UploadBean>() {
//            @Override
//            public void onHandleSuccess(final UploadBean uploadBean) {
//                if (uploadBean.getCode() == 0)
//                    upLoadPic(uploadBean, bytes);//根据token上传图片
//                else showErr(uploadBean.getCode_msg());
//            }
//
//            @Override
//            public void onHandleError(String message) {
//                hideLoading();
//                showErr(message);
//            }
//
//            @Override
//            public void onSubscribe(Disposable d) {
//                compositeDisposable.add(d);
//            }
//        }, new RequestBean().setData(j.toString()));
//    }

//    /**
//     * 上传图片
//     */
//    protected void upLoadPic(final UploadBean uploadBean, byte[] bytes) {
//
//        UploadManager uploadManager = new UploadManager();
//        uploadManager.put(bytes, uploadBean.getPath(), uploadBean.getToken(),
//                new UpCompletionHandler() {
//                    @Override
//                    public void complete(String s, ResponseInfo responseInfo, org.json.JSONObject jsonObject) {
//                        hideLoading();
//                        if (responseInfo.isOK()) {
//                            sendNotice(uploadBean.getDomain() + uploadBean.getPath());
//                            showErr("退出成功!");
//                            finish();
//                        } else
//                            showErr("图片上传失败");
//                    }
//
//                }, null);
//    }


//    /**
//     * 发送群notice 通知其他人修改群头像和昵称
//     *
//     * @param groupUrl 群头像
//     */
//    private void sendNotice(String groupUrl) {
//
//        MessageBean mb = new MessageBean();
//        mb.messageType = MqttConstant.MQTTMESSAGENOTICE;
//        mb.sendId = sp.getString(MqttConstant.USERID, "");
//        mb.sendName = sp.getString(Constant.NICKNAME, "");
//        mb.sendPic = sp.getString(Constant.USER_IMG, "");
//        mb.receiveName = groupName;
//        mb.receivePic = groupUrl;
//        mb.content = sp.getString(Constant.NICKNAME, "") + "退出了群聊";
//        mb.sendDate = System.currentTimeMillis();
//        mb.channelId = topic;
////        mb.chatType = Constant.CHAT_GROUP;//群聊
//        mb.operationStyle = MqttConstant.OFF_GROUP;
//
//        try {
//            MqttManager.getInstance().setMessage(topic, mb);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//
//        //调用groupsetting 接口 修改 群昵称和群头像
//        modifySetting(mb.receiveName, mb.receivePic, false);
//
//    }

//    /**
//     * 修改群信息
//     *
//     * @param isWaring 是否通知其他成员群信息发生了变化,(如果是自己退出群则不要通知其他成员 因为已经有xx退出群的通知了)
//     */
//    private void modifySetting(final String groupName, final String groupImgUrl, final boolean isWaring) {
//
//        JSONObject js = new JSONObject();
//        js.put("token", sp.getString(Constant.TOKEN, ""));
//        js.put("topic", topic);
//        js.put("groupName", groupName);
//        js.put("groupImgUrl", groupImgUrl);
//
//
//        RetrofitHttpUtil.getInstance().groupSetting(new BaseNoTObserver<CreateBean>() {
//            @Override
//            public void onHandleSuccess(CreateBean createBean) {
//
//                if (!isWaring)
//                    return;
//
//                hideLoading();
//                showErr("修改成功");
//
//                if (renameDiago != null && renameDiago.isShowing())
//                    renameDiago.dismiss();
//
//                tvgroupname.setText(groupName);
//
//                MessageBean mb = new MessageBean();
//                mb.messageType = MqttConstant.MQTTMESSAGENOTICE;
//                mb.sendId = sp.getString(MqttConstant.USERID, "");
//                mb.sendPic = sp.getString(Constant.USER_IMG, "");
//                mb.sendName = sp.getString(Constant.NICKNAME, "");
//                mb.content = sp.getString(Constant.NICKNAME, "") + "修改群昵称为 " + groupName;
//                mb.channelId = topic;
//                mb.receivePic = groupImgUrl;
//                mb.receiveName = groupName;
//                mb.sendDate = System.currentTimeMillis();
//                try {
//                    MqttManager.getInstance().setMessage(topic, mb);
//                } catch (Exception e) {
//                    e.printStackTrace();
//                }
//            }
//
//            @Override
//            public void onHandleError(String message) {
//                hideLoading();
//                showErr(message);
//            }
//
//            @Override
//            public void onSubscribe(Disposable d) {
//                compositeDisposable.add(d);
//                showLoading("更新中...");
//            }
//        }, new RequestBean().setData(js.toString()));
//
//    }

}